perm filename TCMPIL.VLI[VLI,LSP] blob sn#382069 filedate 1978-09-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 test du compilateur 
C00003 00003	 test de generation speciales 
C00004 00004	 test de rapidite 
C00008 ENDMK
C⊗;
; test du compilateur ;

(OUTPUT 'TCMPIL)

⊃
(STATUS 1 0 1 2)
↓PRETTY
⊃
(STATUS 1 0 1 2)
↓LODLAP
⊃
(STATUS 1 0 1 2)
↓LAPACK
⊃
(STATUS 1 0 1 2)
↓COMPIL
⊃
(STATUS 1 0 1 2)

(DE fact (n) (IF (ZEROP n) 1 (TIMES n (fact (SUB1 n)))))
(fact 6)
(COMPILE fact T T T)
(fact 6)

(DE A (X Y) 
   (COND
      ((ZEROP X) (ADD1 Y))
      ((ZEROP Y) (A (SUB1 X) 1))
      (T (A (SUB1 X) (A X (SUB1 Y))))))
(A 3 3)
(COMPILE A T T T)
(A 3 3)

(DE DROP (U) ; cf Mc CARTHY ;
   (COND
	((NULL U) NIL)
	(T (CONS [(CAR U)] (DROP (CDR U)))))))))

(COMPILE DROP T T T)

(DROP '(A B C))
; test de generation speciales ;

(DE FOO1 (X)
	['SETQ X ['CDR X]])

(COMPILE FOO1 T T T)
(FOO1 'A)

(DE FOO2 (X Y) 
       [['SETQ X [X 'CDR]]
	[Y (CAR Y)]
	['CAR]
	[]])))
(COMPILE FOO2 T T T)
(FOO2 'A '(B C))

(DE FOO3 (X Y Z)
   (REPEAT (ABS (DIFFER (SUB1 X) Y)) (PRIN1 Z))
   (TERPRI))
(COMPILE FOO3 T T T)
(FOO3 10 5 'GLUCK)
; test de rapidite ;

(DE SORTL (L ;; S X)
    (SETQ S (APPEND L))
    (MAP S (LAMBDA (SL) (AND (CDR L)
	(MAP (CDR SL) (LAMBDA (SL1)
	(OR (SORT (CAR SL) (CAR SL1))
	    (PROGN (SET 'X (CAR SL) SL (CAR SL1))
		(RPLACA SL1 X)))))))) S ))) )))

(PROGN (SETQ LISTEST (NTH 550 (OBLIST))) (LENGTH LISTEST))
(PROGN (SORTL (APPEND LISTEST)) 'INTERPRETE)
(COMPILE SORTL T T T)
(PROGN (SORTL (APPEND LISTEST)) 'COMPILATEUR)

( LAP '(
  ;;;;;;
         (ENTRY %F2%F1SORTL SUBR 1)
;        (JSP L :SBIND1)	;
;        (XWD 0 'SL1)		;
(MOVEI U1 0 1) ; U1 = SL1 ;
         (GETVAL 1 SL)
         (CAR 1 1)
;        (GETVAL 2 SL1)		;
;        (CAR 2 2)		;
(CAR U1 2)
         (PUSHJ P SORT)
         (JUMPN 1 :VPOPJ)
         (PUSH P %T1)      ; (XWD -1 SET) ;
         (PUSH P %T2)      ; 'X ;
         (GETVAL 1 SL)
         (CAR 1 1)
         (PUSH P 1)
         (GETVAL 1 SL)
         (PUSH P 1)
;        (GETVAL 1 SL1)		;
;        (CAR 1 1)		;
(CAR U1 1)
         (JSP L :NSUBR)
;        (GETVAL 1 SL1)		;
(MOVEI 1 0 U1)
         (GETVAL 2 X)
         (RPLACA 1 2)
         (POPJ P)
  ;;;;;;
         (ENTRY %F1SORTL SUBR 1)
         (JSP L :SBIND1)
         (XWD 0 'SL)
         (GETVAL 1 L)
         (CDR 1 1)
         (JUMPE 1 :VPOPJ)
         (GETVAL 1 SL)
         (CDR 1 1)
         (MOVEI 2 '%F2%F1SORTL)
         (JRST 0 :$MAP1)
  ;;;;;;
         (ENTRY SORTL SUBR 3)
         (JSP L :SBIND3)
         (XWD 0 '(L S X))
         (GETVAL 1 L)
         (SETZ 2)
         (PUSHJ P APPEND)
         (PUTVAL 1 S)
         (MOVEI 2 '%F1SORTL)
         (PUSHJ P :$MAP1)
         (GETVAL 1 S)
         (POPJ P)
  
  ;---------- # T B L
   #TBL LENGTH = 2 ;

   %T1 (XWD -1 SET)
   %T2 'X
  

   ) NIL )
  
(PROGN (SORTL (APPEND LISTEST)) 'HAND-CODEE)

(DE sortl1 (l) ; trier la liste l de pnames ;
  (if l 
      (let ((x (nextl l)) (l (self l))) (cond
	((null l) [x])
	((sort x (car l)) (cons x l))
	(t (cons (nextl l) (self x l)))))))

(PROGN (SORTL (APPEND LISTEST)) 'AUTRE)

(COMPILE SORTL1 T T T)

(PROGN (SORTL (APPEND LISTEST)) 'AUTRE)

(OUTPUT)
(PRINT "Le resultat est sur (DSK (TCMPIL . LST))")